home *** CD-ROM | disk | FTP | other *** search
/ The Macintosh Demo Applications CD / Apple-MacintoshDemoApplicationsCD-1.0-1992.iso / More Information / QuicKeys / For Programmers Only.sea / C Examples / extensions.h < prev    next >
Text File  |  1991-06-22  |  5KB  |  150 lines

  1. /*************************
  2.     $Workfile:   extensions.h  $
  3.     $Revision:   1.1  $
  4.                             
  5.     QuicKeys2™ extentions defines
  6.  
  7.     © 1990 CE Software, Inc.  All rights reserved.
  8.             
  9.     For QuicKeys 2 Extension Sample source code you have a royalty-free right
  10.     to include object code derived from this Sample source code in programs
  11.     that you develop.  You also have the right to use, distribute, and license
  12.     such programs to third parties without payment of any further license fees
  13.     to CE Software, Inc., so long as a copyright notice sufficient to protect
  14.     your copyright for your software in the United States or any other country;
  15.     is included in the graphic display of your software and on the labels
  16.     affixed to the media on which your software is distributed.
  17.  
  18.     WHEN    WHO        WHAT
  19.  
  20. Checked in by Marsh Gosnell, Wednesday, September 5, 1990 12:37:13 PM
  21.     8/18    mkg        created file
  22.     8/24    mkg        added stuff for type of periodic call
  23.     8/28    mkg        changes for Think C
  24.  
  25. Checked in by Marsh Gosnell, Thursday, September 6, 1990 4:52:55 PM
  26.     9/5        mkg        make one version for MPW C++, MPW C, and Think C
  27.     9/6        mkg        added PublicQK2Globals and QuicKeys 2 driver control calls
  28. •••••
  29.     5/29    mkg        update for QK version 2.1
  30. •••••
  31. */
  32.  
  33. /* resource ID's */
  34. #define UIRsrcID    -14348
  35. #define XRsrcID        -14347
  36.  
  37. /* extension data format. followed by user data */
  38. struct ExtensionDataHeader {
  39.     unsigned char    strTitle[16];    /* title of key.  may be modified by user interface routine */
  40.     OSType            ostCreator;        /* creator of keyset.  populated by QuicKeys */
  41.     short            wLength;        /* length of keyset including these fields and private data */
  42. };
  43. #ifndef __cplusplus
  44. typedef struct ExtensionDataHeader ExtensionDataHeader;
  45. #endif
  46.  
  47. /* possible selectors for user interface routine */
  48. #define newUI        0    /* you're being called to create a new extension. */
  49.                         /* Initialize your private data accordingly */
  50. #define    initUI        1    /* Your dialog items have been added to QuicKeys' dialog */
  51.                         /* Do any setup processing here */
  52. #define hitUI        2    /* The user clicked or typed into one of your dialog items */
  53. #define    doneUI        3    /* Clean up your act before the dialog is disposed */
  54.  
  55.  
  56.  
  57. struct ExecuteQueue {
  58. #ifdef __cplusplus
  59.     ExecuteQueue*    pNext;            /* pointer to next queue entry.  populated by QuicKeys */
  60. #else
  61.     Ptr                pNext;
  62. #endif
  63.     OSType            ostCreator;        /* creator of keyset.  populated by QuicKeys */
  64.     unsigned short    flags;            /* flags for this executable */
  65.     unsigned char    strfName[32];    /* your file name.  populated by QuicKeys */
  66.     char            sicn[32];        /* custom SICN you must popupate if you have one */
  67.     long            lRefCon;        /* for your use */
  68. };
  69. #ifndef __cplusplus
  70. typedef struct ExecuteQueue ExecuteQueue;
  71. #endif
  72.  
  73. /* bits in flags.  all other bits are reserved and should be zero. */
  74. #define PeriodicFlag    0x0001    /* your routine will be run every GetNextEvent, */
  75.                                 /* EventAvail, or SystemTask call */
  76. #define AbortFlag        0x0002    /* set if you need to be told to stop what you're doing */
  77. #define DontLoadFlag    0x8000    /* set if you don't want to be loaded */
  78.  
  79. /* possible selectors for execute routine */
  80. #define initX        -1    /* your have just been loaded.  Your resource file is still open */
  81. #define    regularX    0    /* execute your key. */
  82. #define periodicX    1    /* PeriodicFlag is set and it's SystemTask, GetNextEvent,
  83.                         /* or EventAvail time */
  84. #define abortX        2    /* QK is aborting/cancelling what it's doing and you have AbortFlag */
  85.                         /* set.  You may NOT do things that might move memory */
  86.  
  87. /* possible types of periodic calls */
  88. #define periodicDoRun    0        /* SystemTask and anytime QK2 driver gets a DoRun */ 
  89. #define periodicGNE        1        /* GetNextEvent */
  90. #define periodicEAvail    2        /* EventAvail */
  91.  
  92. /* QuicKeys 2™ globals available for your use */
  93. struct PublicQK2Globals {
  94.     char    private1[524];
  95.      
  96.     short    wDestVol;            /* System folder volume */
  97.     long    lDestDirID;            /* System folder dirID */
  98.     long    lPrefsDir;            /* Preferences folder dirID */
  99.     long    lQKDir;                /* QuicKeys folder dirID */
  100.     long    lKeySetDir;            /* KeySet folder dirID */
  101.     long    lMacroDir;            /* Macros folder dirID */
  102.     long    lSeqDir;            /* Sequences folder dirID */
  103.     long    lExtDir;            /* Extensions folder dirID */
  104.     long    lClipDir;            /* Clipboards folder dirID */
  105.  
  106.     char    private3[70];
  107.     
  108.     ExecuteQueue* pExtensions;    /* queue of externals loaded in at boot time */
  109.  
  110.     char    private4[1338];
  111.      
  112.     short    wCurKeyType;        /* type of the key in ucaCurKey */
  113.     char    ucaCurKey[2048];    /* This is a key being executed */
  114.     Str255    strTypeString;        /* put a string here for QK2 to type. */
  115.                                 /* make sure that strTypeString[0] == 0 before you do. */
  116. };
  117.  
  118. #ifndef __cplusplus
  119. typedef struct PublicQK2Globals PublicQK2Globals;
  120. #endif
  121.  
  122. /* QuicKeys 2™ driver name */
  123. #define QuicKeysDriverName "\p.Quickeys"
  124.  
  125. /* QuicKeys 2™ driver control calls */
  126. #define QK2GetGlobals        8
  127. #define QK2PlayByName        17
  128. #define QK2PlayByPtr        18
  129. #define QK2GetStatus        19
  130. #define QK2Kill                20
  131. #define QK2OnOff            21
  132. #define QK2Pause            23
  133. #define QK2GetPosition        24
  134. #define QK2SetPosition        25
  135. #define QK2GetVersion        26
  136.  
  137. /* possible QuicKeys 2™ status */
  138. #define QK2IsDisabled              -1
  139. #define QK2InUserInterface        -2
  140. #define QK2BusyNotPlaying        -3
  141. #define QK2IsIdle                0
  142. #define QK2InPlayFast            1
  143. #define QK2InPlayFastPaused        2
  144. #define QK2InRecordFast            3
  145. #define QK2InRecordFastPaused    4
  146. #define QK2InPlayRT                5
  147. #define QK2InPlayRTPaused        6
  148. #define QK2InRecordRT            7
  149. #define QK2InRecordRTPaused        8
  150.